Lab3Extra

Modified

2025-11-11

Source: Lab3Extra/Lab3Extra.v (modified 2025-10-16 00:42)

// top_add4_to_7seg.v
// 将 Adder4 的和与进位分别显示在两块七段数码管(十六进制)上。
// 端口命名与你作业说明一致:segments[0]=a ... segments[6]=g(active-low)

module Lab3Extra (
    input  wire [3:0] A,           // 可以连到四个拨码开关
    input  wire [3:0] B,           // 同上
    input  wire       Cin,         // 进位输入(按键/开关)
    output wire [6:0] segments_sum,   // 显示 Z(HEX)
    output wire [6:0] segments_cout   // 显示 Cout(0 或 1 的 HEX)
);
    // -------- 核心加法器 --------
    wire [3:0] Z;
    wire       Cout;

    Adder4 u_add (
        .A(A),
        .B(B),
        .Cin(Cin),
        .Z(Z),
        .Cout(Cout)
    );

    // -------- 七段解码(HEX) --------
    // 第一块:显示 4-bit 和(Z)
    sevenSeg u_hex_sum (
        .digit(Z),              // 直接把 Z[3:0] 当成 16 进制输入
        .segments(segments_sum) // active-low 输出到数码管
    );

    // 第二块:显示 Cout(0 或 1)
    // 把 Cout 扩展成 4-bit:{0,0,0,Cout},这样七段就显示 "0" 或 "1"
    wire [3:0] digit_cout = {3'b000, Cout};

    sevenSeg u_hex_cout (
        .digit(digit_cout),
        .segments(segments_cout)
    );

endmodule